#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <unistd.h>
#include <stdio.h>
#include <bpf/bpf.h>
#include <bpf/libbpf.h>
#include <linux/sched.h>
#include <linux/types.h>
#include <QLabel>
#include <QMessageBox>



MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->treeWidget->setColumnCount(5);  //设置每个结点的列数
    QStringList strList;     
    strList<<"用户名"<<"用户名组"<<"进程组"<<"进程号"<<"CPU / RAM"<<"命令";   
    ui->treeWidget->setHeaderLabels(strList);			// 声明一个QStringList  列表， 设置列表控件的头标签，即上面strList的内容，设置了标题



    my_thread = new MyThread;  // 实例化线程      

    connect(my_thread, SIGNAL(updateUI(QStringList)), this, SLOT(Display(QStringList)));   //连接信号槽     子线程通过这个信号槽更新UI界面 列表控件

    my_thread->start();  // 开启线程
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::Display(QStringList items)	//display:block是显示成块状，独占一行
{
    ui->treeWidget->insertTopLevelItem(0, new QTreeWidgetItem(items)); //把子线程传过来的参数显示到界面上（在第0列添加，并且使用的是头插法，后添加的在最上面）
    ui->statusBar->showMessage(items.value(items.length()-1));		//把子线程传过来的总CPU利用率显示到底部statusbar控件上 
}
